iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

今天又被Agent的使用又被擋了,仔細看了一下問題,這次是runner和agent用量爆表,和之前不是同一個問題,至少之前的bug是解了。而這次爆表的原因不完全是bug,而是設計上的沒有考量到所產生的。目前設計的流程裡,全是以GitHub Issueo做為驅動,一但Assign給Copilot,它會自己生成PR、branch和啓動runner去處理,由於起始點是從Issue開始,故想法上是任一環節有錯就直接抽換,並重新生成Issue並再次自動assign後啓動。

問題就在這,當某些原因一直造成錯誤後,就會不停生成,再繼續一直重覆。今早一起來時,發現每個issue都被重新的生成了快10次,再加上昨天又在實驗是否可以多個沒有相依的coding agent一起執行,因此,同時間大約有10多個runner + agent努的執行。以至於今早一看,runner minute約6000分鐘,而agent premium request用掉了160個。要知道GitHub Copilot Pro Plus一個用的Premium Request是給1500次,而在約6小時的時間裡,我就用了11%的額度。難怪會被鎖住。

早上試過不能用之後,一直到了下午我才開始使用。為了避免同樣的問題再次發生。只好全數停止,也就是讓整個自動推進的流程先暫時關閉。先回復到手動assign issue給Copilot的半自動階段,畢竟是希望能夠利用AI進行完整的開發,一直卡在這也不是辦法。雖然的確慢慢地完善了這流程,但這流程只是整個開發中的一個環節,還有不少東西要去試的。雖然很想再花時間,但還是先打住好了。

今天又花了些時間看原先已被實作出來的程式碼,發現之前和AI討論只是大方向,也就是大致上都有被實現,但中間缺了銜接點,故看起來好像都完成了所交付的任務,整個app還是動不了。目前的修繕方式就是先利用AI進行哪些斷點的整理,再依分析後的部份發新的issue,之後再一個個半自動去執行。

回到app本身,看Hot reload的擴充系統的前期程式碼看起來很蠻像樣的,這也是這個app基底的一個重要功能。雖然現階段只有簡單的interface,沒有實際的功能,但明天來試著將AssemblyContextLoad接起來後,來試著正式進行load/unload的功能。

public interface IPluginLifecycleManager : IService
{
    IReadOnlyCollection<IPlugin> ManagedPlugins { get; }

    Task<IPlugin> LoadPluginAsync(string pluginPath, CancellationToken cancellationToken = default);

    Task<bool> UnloadPluginAsync(IPlugin plugin, CancellationToken cancellationToken = default);

    PluginState GetPluginState(IPlugin plugin);

    Task<bool> StartPluginAsync(IPlugin plugin, CancellationToken cancellationToken = default);

    Task<bool> StopPluginAsync(IPlugin plugin, CancellationToken cancellationToken = default);

    Task<bool> RestartPluginAsync(IPlugin plugin, CancellationToken cancellationToken = default);

    Task<bool> RecoverPluginAsync(IPlugin plugin, CancellationToken cancellationToken = default);

    Task<bool> UpdatePluginAsync(IPlugin plugin, string newVersionPath, CancellationToken cancellationToken = default);

    Task<PluginHealthResult> CheckPluginHealthAsync(IPlugin plugin, CancellationToken cancellationToken = default);

    IReadOnlyCollection<IPlugin> GetPluginDependents(IPlugin plugin);

    IReadOnlyCollection<IPlugin> GetPluginDependencies(IPlugin plugin);

    Task GracefulShutdownAsync(CancellationToken cancellationToken = default);

    event EventHandler<PluginStateChangedEventArgs> PluginStateChanged;
}

上一篇
Initial checking created code
系列文
Before AI dominate the world, AI dominate my world10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言